home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / gemfsc18.lzh / AESSRC18.LZH / AESUTIL.S / GRAMOUSE.S next >
Text File  |  1989-08-26  |  4KB  |  101 lines

  1.  
  2. ;*========================================================================
  3. ;*
  4. ;* AESFAST Public Domain GEM bindings.
  5. ;*
  6. ;*  04/05/89 -  v1.2
  7. ;*              Added code to insure that the line-a base pointer is in A0
  8. ;*              before calling $A00x to turn mouse on & off.  This has
  9. ;*              never been needed before, but seems to be required under
  10. ;*              TOS 1.4.  Also, for the mouse-on call, the flag value in
  11. ;*              INTIN[0] is now properly set to non-zero, to indicate that
  12. ;*              we *don't* want the mouse 'forced' on regardless of the
  13. ;*              current depth of mouse-off calls.
  14. ;*  08/28/89 -  v1.3
  15. ;*              Renamed graqon_mouse to gra_qonmouse.
  16. ;*              Renamed graqof_mouse to gra_qofmouse.
  17. ;*              Renamed graq_mstate  to gra_qmstate. 
  18. ;*========================================================================
  19.  
  20. ;*************************************************************************
  21. ;*
  22. ;* Graphics routines 1 of n.
  23. ;*
  24. ;*************************************************************************
  25.           
  26. lineabase:dc.l      0         ; -> base addr of line-a's vars
  27. noforce:  dc.w      1         ; flag: don't 'force' mouse on for $A009 call
  28.  
  29. linea_init:
  30.           dc.w      $A000
  31.           lea       lineabase(pc),a0
  32.           move.l    d0,(a0)
  33.           rts
  34.  
  35. ;-------------------------------------------------------------------------
  36. ; gra_qonmouse - Turn mouse on.
  37. ; gra_qofmouse - turn mouse off.
  38. ;
  39. ;  These routines use the Line-A mouse on/off calls, and are a good bit
  40. ;  faster than graf_mouse(), but are *completely* non-standard.  They
  41. ;  are also pretty much untested. 
  42. ;
  43. ;   void gra_qonmouse();
  44. ;   void gra_qofmouse();
  45. ;-------------------------------------------------------------------------
  46.  
  47. _gra_qonmouse::
  48.           move.l    a2,-(sp)
  49.           move.l    lineabase(pc),d0
  50.           bne.s     .initdone
  51.           bsr.s     linea_init
  52. .initdone:
  53.           move.l    d0,a0
  54.           lea       noforce(pc),a1      ; a1 -> flag indicating that mouse
  55.           move.l    a1,8(a0)            ; is not to be 'forced' on, put
  56.           dc.w      $A009               ; pointer in line-a INTIN var.
  57.           move.l    (sp)+,a2
  58.           rts
  59.  
  60. _gra_qofmouse::
  61.           move.l    a2,-(sp)
  62.           move.l    lineabase(pc),d0
  63.           bne.s     .initdone
  64.           bsr.s     linea_init
  65. .initdone:
  66.           move.l    d0,a0
  67.           dc.w      $A00A
  68.           move.l    (sp)+,a2
  69.           rts
  70.  
  71. ;-------------------------------------------------------------------------
  72. ; gra_qmstate -  Get mouse state (x/y/buttons) quickly, via Line-A vars.
  73. ;
  74. ;  This routine is similar to graf_mkstate() in usage, except that the
  75. ;  keyboard state is not returned.  
  76. ;
  77. ;   void gra_qmstate(&mousex, &mousey, &mousebtns);
  78. ;-------------------------------------------------------------------------
  79.  
  80.  
  81. _gra_qmstate::
  82.           .cargs    #4,.pmx.l,.pmy.l,.pmb.l
  83.           
  84.           move.l    lineabase(pc),d0
  85.           bne.s     .initdone
  86.           move.l    a2,-(sp)
  87.           bsr.s     linea_init
  88.           move.l    (sp)+,a2
  89. .initdone:
  90.           move.l    d0,a0
  91.           move.l    .pmx(sp),a1
  92.           move.w    -602(a0),(a1)       ; GCURX
  93.           move.l    .pmy(sp),a1
  94.           move.w    -600(a0),(a1)       ; GCURY
  95.           move.l    .pmb(sp),a1
  96.           move.w    -596(a0),(a1)       ; MOUSE_BT
  97.           rts 
  98.  
  99. ;         end of code
  100.  
  101.